package cn.yx.common.core.enums.message;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

/**
 * <p>消息等级枚举</p>
 * <p>针对不同等级的消息，当推送邮件、短信等个人消息时可指定推送到不同的人员，当推送企业微信群消息或钉钉群消息时不指定具体的人员</p>
 *
 * @author Wgssmart
 */
public enum MessageLevelEnum {

    /**
     * INFO级别
     */
    INFO("INFO", "INFO级别，仅提示作用，不推送消息"),
    WARN("WARN", "WARN级别，警告作用，推送消息到开发"),
    ERROR("ERROR", "ERROR级别，错误，推送消息到开发、测试、运维"),
    FATAL("FATAL", "FATAL级别，致命错误，推送消息到开发、测试、运维、项目经理、技术总监");

    private final String value;
    private final String desc;

    private static final Map<String, MessageLevelEnum> LOOKUP;

    static {
        LOOKUP = new HashMap<>();
        for (MessageLevelEnum messageLevelEnum : EnumSet.allOf(MessageLevelEnum.class)) {
            LOOKUP.put(messageLevelEnum.getValue(), messageLevelEnum);
        }
    }

    MessageLevelEnum(String value, String desc) {
        this.value = value;
        this.desc = desc;
    }

    public String getValue() {
        return value;
    }

    public String getDesc() {
        return desc;
    }

    public static MessageLevelEnum findByValue(String value) {
        return LOOKUP.get(value);
    }
}